import axios from 'axios'
import store from '@/store'
import router from '@/router'
import { Message } from 'element-ui'

const request = axios.create({
  baseURL: 'https://likede2-admin.itheima.net/likede/',
  timeout: 10000
})

// 添加请求拦截器
request.interceptors.request.use(
  config => {
    const token = store.state.user.token
    // console.log(token)
    // 统一添加请求头 携带token
    if (token) {
      config.headers.Authorization = token
    }
    return config
  },
  err => {
    return Promise.reject(err)
  }
)

// 添加响应拦截器
request.interceptors.response.use(
  response => {
    return response
  },
  error => {
    // 判断一下401
    if (error.response.status === 401) {
      Message.warning('登录过期，请重新登录~')
      store.dispatch('user/delToken')// 清除token
      router.push('login')// 回到登录页
    }
    return Promise.reject(error)
  }
)

export default request

// 全局前置路由守卫 beforeEach
const whiteList = ['/login', '/404']// 白名单
router?.beforeEach((to, from, next) => { // 需要在定义router之后执行，否则是undefined报错
  if (store.state.user.token) {
    // 存在token
    if (to.path === '/login') {
      next('/') // 中转到主页
    } else {
      next() // 放行
    }
  } else {
    // 没有token
    if (whiteList.includes(to.path)) {
      next()
    } else {
      next('/login') // 中转到登录页
    }
  }
})
